package com.woniuxy.sddfp.sms;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 *      *        spring创建对象 添加到ioc容器中有多少种方式?
 *      *          1、配置类 + @bean 用在方法上面
 *      *          2、扫描 + @Component @controller
 *      *          3、xml配置
 *      *          4、@Import  底层的注解操作            springboot 底层的自动装配都是这个
 *      *          5、实现 BeanFactory  接口也可以       springboot + 第三方框架中的 整合  mybatis  sessionFactory
 *      *          6、实现 ApplicationContextAware 接口  下面是整个项目需要提前初始化化的时候加载的bean
 *
 */
@SpringBootApplication
public class SmSApplication {

    // RedisTemplate       redis的模板
    // RabbitMQTemplate    MQ的模板
    // JDBCTemplate       jdbc的模板   研究template  我自己使用封装template

    //看源码   1、RedisTemplate 什么时候创建的    2、RedisTemplate怎么连接 redis

    /**
     *  创建的时候 扫描 创建对象 添加到ioc容器中 可以使用
     *  1、 @SpringBootApplication  这个注解是复合注解
     *        @EnableAutoConfiguration  开启自动装配的注解
     *        @Import(AutoConfigurationImportSelector.class)    (把 class对象添加到ioc容器中的注解 )
     *
     *  2、AutoConfigurationImportSelector 这个类中做什么了?
     *        getCandidateConfigurations()  这个方法中 回去加载 META-INF/spring.factories 文件
     *  3、spring.factories 这个文件   自动装配的 依赖中
     *      加载 RedisAutoConfiguration 这类
     *  4、RedisAutoConfiguration 这类中会加载 创建 RedisTemplate 模板对象
     *
     * 2、RedisTemplate怎么连接 redis
     *     1、在 RedisAutoConfiguration 中会加载
     *        1、加载配置类  @EnableConfigurationProperties(RedisProperties.class)
     *        2、RedisProperties
     *             @ConfigurationProperties(prefix = "spring.redis") 读取 yaml中的配置
     *
     *     2、在创建的时候 template.setConnectionFactory(redisConnectionFactory);  连接redis
     */
    public static void main(String[] args) {


        SpringApplication.run(SmSApplication.class, args);

    }

}